#!/usr/bin/env python
# coding: utf-8

# In[2]:


pip install yfinance pandas ta


# In[3]:


import yfinance as yf
import pandas as pd
import ta

# 假设获取所有股票代码，这里以部分美股为例
tickers = ['AAPL', 'MSFT', 'GOOG', 'AMZN', 'TSLA', 'NVDA', 'FB', 'JPM', 'BAC', 'V', 'PG']

# 获取上 10 个以上交易日的所有股票的日线数据
data = yf.download(tickers, period='10d')

# 处理数据，将 MultiIndex 转换为普通 DataFrame
data = data.stack(level=1).reset_index()
data.rename(columns={'level_1': 'Ticker'}, inplace=True)

# 获取 dataframe 的统计表
stats = data.describe()
print("数据统计表:")
print(stats)

# 分析数据特点
print("\n数据特点分析:")
print("数据包含的股票数量:", len(data['Ticker'].unique()))
print("数据包含的交易日数量:", len(data['Date'].unique()))
print("数据包含的字段:", data.columns)

# 对数据进行预处理，分股票计算出相关的技术指标值 ma5，ma10，rsi 等
grouped = data.groupby('Ticker')
data['ma5'] = grouped['Close'].transform(lambda x: ta.trend.SMAIndicator(x, window=5).sma_indicator())
data['ma10'] = grouped['Close'].transform(lambda x: ta.trend.SMAIndicator(x, window=10).sma_indicator())
data['rsi'] = grouped['Close'].transform(lambda x: ta.momentum.RSIIndicator(x, window=14).rsi())

# 提取出买点股票：5 日线上穿 10 日线的所有股票列表（ma5 > ma10）
buy_stocks = data.groupby('Ticker').last()
buy_stocks = buy_stocks[buy_stocks['ma5'] > buy_stocks['ma10']].index.tolist()

print("\n买点股票列表:")
print(buy_stocks)


# In[ ]:




